home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / THC-LH10.ZIP / SCRIPT.DOC < prev    next >
Text File  |  1996-04-14  |  27KB  |  503 lines

  1.                      *********  *    *     ****
  2.                          *      *    *    *
  3.                          *      ******   *  
  4.                          *      *    *    *
  5.                          *      *    *     ****
  6.  
  7.                          The Hacker's Choice
  8.                       Part I - The Login Hacker
  9.                (c) 1996 by van Hauser/THC of L.o.r.E. BBS
  10. -----------------------------------------------------------------------------
  11.  
  12.                         The Script Documentation
  13.  
  14.  This is the Login Hacker, the first release of the THC Project of L.o.r.E.
  15.           --->>> READ THE NORMAL DOCUMENTATION FIRST ! <<<---
  16.  For easy targets, you don't need this script language, you can use the
  17.  menu to select everything you like. But for more difficult targets, you
  18.  need this : The Login Hacker Script Language. It's very easy to use.
  19.  It's like any other script language of terminal software but has got special
  20.  possiblities for hacking.
  21.  
  22.  
  23.  
  24.                         Part I - The Structure
  25.  
  26.    everything that begins with a ";" is a comment.
  27.    everything that begins with a ":" is a jump mark for goto commands
  28.    Then there are 4 lines that start with a "#" - that marks the beginning
  29.    of a special part in the script. 
  30.    The first is #DEFINE which is to define the variables. 
  31.    The second is a special one called #NOCARRIER where is
  32.    automatically jumped to if the carrier gets lost without purpose 
  33.    (the hangup command is on purpose, anything else not ;-) ). 
  34.    The third is the #START where the actual script starts.
  35.    The #END marks the end of the script.
  36.  
  37. *******************************************************************************
  38. If you get an ERROR when compiling, there's a file named <name>.BAK in the
  39. same directory. Look into it and compare the error message with the output
  40. there.
  41. There are two types of Error Messages produced while compiling :
  42. WARNING Messages - important to take a look after that type, but the compiler
  43.                    will compile it anyway. The script MAY run without problems.
  44.                    This type is produced when f.e. the specified dictionary
  45.                    is not found. Maybe you didn't copy it already.
  46. ERROR Messages   - This is a critical error. The compiler terminates at once.
  47.                    Check the Error message, the .BAK and the original file
  48.                    to correct it.
  49.  
  50. *******************************************************************************
  51.  
  52. -------------------------------------------------------------------------------
  53.                  Part II - The Definitions -> #DEFINE
  54.  
  55.  In this part you may ONLY declare the value of the variables.
  56.  All variables are optional EXCEPT the logfile and the phone_nr variable.
  57.  All variables are discussed in all their possibilties.
  58.  You may NOT define any other variables of your own here !
  59.  
  60. #DEFINE
  61.  
  62.  LOGFILE=FILENAME    The Logfile to which all output is written.
  63.                      ** This is one to the two variable which MUST be used. **
  64.                      Example : LOGFILE=C:\OUTPUT\NY-SYS5.LOG
  65.  
  66.  PHONE_NR=NUMBER     The phone_nr variable is used when you use the DIAL
  67.                      command. It may have letters and digits!
  68.                      ** This is the second variable that MUST be used. **
  69.                      Note : If your modem needs Pulse Dialing, put a "P"
  70.                      in front of the number!
  71.                      Example : PHONE_NR=1-800-WHO-CARES
  72.  
  73.  INIT_MODEM=STRING   If you need a special modem init string, use this command
  74.                      Don't put the "AT" command in front! If not specified,
  75.                      the standard THC_Login_Hacker Setup entry is used.
  76.                      Example : INIT_MODEM=Z   (that would be "AT Z")
  77.  
  78.  INIT_DATA=STRING    This inits the Datachannel like Parity bit, data bits. 
  79.                      stop bits etc. common are 8N1 and 7E1. if not specified
  80.                      the standard THC_Login_Hacker Setup entry is used.
  81.                      It must have those 3 characters. The first may either
  82.                      be 7 or 8, these are the data bits. The second may be
  83.                      P for Parity, E fo Even or N for None Control Bit.
  84.                      The Third specifies if theirs 1 start bit or 2 altogether
  85.                      (1 start + 1 stop bit). 7/8+E/P/N+1/2
  86.  
  87.  DIAL_TRIES=NUMBER   This variable declares the maximum numbers of dial
  88.                      attempts the script does. The Number may be between
  89.                      0-65535. Zero means unlimited connects! If the number is
  90.                      reached a HANGUP follows and a comment is written in the
  91.                      script.
  92.                      NOTE : If NOT specified in the script, the settings from
  93.                             LOGINH.CFG will be used!
  94.                      Example : DIAL_TRIES=3
  95.                      Standard : 0
  96.  
  97.  LOGIN_TRIES=NUMBER  This variable declares the maximum numbers of login tries
  98.                      the script does. It may be between 0-2300000000.
  99.                      Zero means unlimited. Note that if a dictionary file 
  100.                      reaches EOF, the script automatically hangs up and
  101.                      terminates. A Login is counted as a long try if the 
  102.                      dictionary most used does a SEND_NEXT_DIC or NEXT_DIC
  103.                      command or the same with the BRUTE.
  104.                      NOTE : If NOT specified in the script, the settings from
  105.                             LOGINH.CFG will be used!
  106.                      Example : LOGIN_TRIES=0
  107.                      Standard : 0
  108.  
  109.  DIC(NUMBER)=FILENAME  
  110.                      Specify a dictionary to use in the script.
  111.                      DIC are pointers to Dictionary files. You may have up to
  112.                      3 dictionaries, from DIC(1) to DIC(3). With the commands 
  113.                      Send_Next_DIC(1), Send_DIC(1), and Next_DIC(1) you can use
  114.                      it. but more on how to use this later.
  115.                      Example : DIC(1)=C:\HACKING\DICTIONA.RY\BAD_PWS.DIC
  116.  
  117.  FROM_DIC(NUMBER)=STRING  
  118.                      This defines from which word up the dictionary is used.
  119.                      Example : FROM_DIC(1)=Tracy
  120.                                This example sends every word from "Tracy" on
  121.                                in the specified dictionary number 1
  122.  
  123.  BRUTE(NUMBER)=STRING,NUMBER,NUMBER,NUMBER
  124.                      Specify a brute force generator to use in the script
  125.                      Now for the hardcore thing of this program :
  126.                               The brute force option.
  127.                      It's very flexible as you will soon see. The options 
  128.                      for the BRUTE variable are divided into 4 parts, 
  129.                      each seperated by a ",".
  130.                   (1)The first tells what is used for brute force: a=lowercase
  131.                      A=Uppercase 1=numbers $=special chars ^=Control Characters
  132.                      A1$ would be Upper, numbers and special chars
  133.                      ALL is a synonymous for the WHOLE ascii table!
  134.                   (2)The second one tells how many different types must be there
  135.                      to be a valid choice. "types" means the charsets of (1).
  136.                      A value of 1 means EVERY generated word is Okay while
  137.                      a value of 2 there must be at f.e. one Upcase and one
  138.                      number in the generated word to be valid. 
  139.                      (A value of 0 is not possible)
  140.                   (3)The third tells the minimum length of a valid BF password.
  141.                   (4)The fourth the maximum length. 
  142.                      NOTE : Minimum length is 1 - Maximum length is 12 !
  143.                      And again you may have up to 3 brute force generators.
  144.                      (BRUTE(2) etc.) and if one reaches the end the script 
  145.                      finishs. 
  146.                      Commands to use later are : 
  147.                      Next_Brute(1), Send_Next_Brute(1), Send_Brute(1)
  148.                      Example : BRUTE(1)=a,1,1,6
  149.                                This example inits the brute force generator
  150.                                number 1 with the following data :
  151.                                 * lower case letters only
  152.                                 * at least one type of char set must be present
  153.                                   in a valid brute generated word
  154.                                   (at least "1" means everyone will do)
  155.                                 * Minimum length of a valid word is 1
  156.                                 * Maximum length of a valid word is 6
  157.  
  158.  FROM_BRUTE(number)=STRING
  159.                      This starts the brute force generator with this 
  160.                      initalisation. If started with a 4 letter digit and you
  161.                      scan 1-8 digits, 1-3 digits won't be checked.
  162.                      The entry is generated increasingly from the right.
  163.                      that means : first aaaa, then aaab, then aaac etc.
  164.                      Example : FROM_BRUTE(1)=2527
  165.  
  166. -------------------------------------------------------------------------------
  167.  
  168.                          PART III - The #NOCARRIER Section
  169.  
  170.      As said before, this is the point which is executed when you loose the
  171.      carrier and didn't use the HANGUP command. NOTE that it will terminate the
  172.      script when you don't end this part with a GOTO(#START) or GOTO(1) etc. !!
  173.      The DIAL_TRIES setting ISN'T checked here.
  174.      ... remember you need to dial again to the system.
  175.      I don't tell you the commands here ... look in the #START section.
  176.  
  177. #NOCARRIER
  178.  
  179.  
  180. -------------------------------------------------------------------------------
  181.  
  182.                          PART IV - The #START Section
  183.  
  184.      This is where you program the algorythm to hack a system.
  185.      Every command is presented here ... so read carefully !
  186.  
  187.  
  188. #START
  189.  
  190.  LOG(STRING)       With the LOG() command you write something into the logfile.
  191.                    It can be any text, variables MUST have a "$" sign in front 
  192.                    of them and MUST have spaces around it or "(" or ")" ! 
  193.                    Every LOG command automatically prints ENTER at the end.
  194.                    Example : LOG(Beginning on $DATE * $TIME)
  195.                              this prints "Beginning on 24-12-95 * 23:00"
  196.  
  197.  LOG_(STRING)      same as above but doesn't writes CRLF (End-Of-Line) after
  198.                    the text.
  199.  
  200.  :NUMBER           every line that begins with a ":" is a GOTO Marking.
  201.                    It can only be a number ! You may have up to 240 markings
  202.                    (only with the numbers 1 to 240 ... no others)
  203.                    You may jump to such a marking with the GOTO, GOSUB,
  204.                    CHECK4OUTPUT and CHECK4CARRIER commands.
  205.                    Example : :1   
  206.                               this specifies the jump point number 1 on this line
  207.                          
  208.  
  209.  GOTO(NUMBER)      This jumpt to the specified Jump Marking.
  210.                    You may also jump to #START, #NOCARRIER and #END
  211.                    Example : GOTO(#END)  (this terminates the script)
  212.  
  213.  GOSUB(NUMBER)     With the GOSUB Command you jump to one goto marking. 
  214.                    It will execute normally after that; it will jump back
  215.                    to the point the GOSUB command was executed when a 
  216.                    RETURN command is encountered.
  217.                    Can't be GOSUB(#END) !
  218.                    Example : GOSUB(4)
  219.  
  220.  RETURN            Returns to the location of the last gosub command executed
  221.                    and continues normally. If a return command is encountered
  222.                    without a Gosub start adress in the buffer, it will be 
  223.                    ignored. You may have as many as 255 gosubs in buffer.
  224.                    Example : RETURN
  225.  
  226.  CHECK4CARRIER(NUMBER) 
  227.                    Checks the modem if it has got a carrier connect. If NOT
  228.                    it jumps to the specified goto marking. If YES it sets the
  229.                    internal connect variable to TRUE to check for NO_CARRIERS
  230.                    You may also jump to #NOCARRIER, #START and #END.
  231.                    It is also possible to just turn the checking ON or OFF.
  232.                    If Check4Carrier(ON) is done instead of check4carrier with
  233.                    a jump marking it does a carrier detector check and if NOT
  234.                    presents jump to #NoCarrier
  235.                    This command is useful ONLY when you first turn 
  236.                    CHECK4CARRIER(OFF) or you don't use the DIAL command to
  237.                    connect to your target (f.e. let the SCAVENGER DIALER do
  238.                    this.)
  239.                    Examples : CHECK4CARRIER(#NOCARRIER)
  240.                               CHECK4CARRIER(5)
  241.                               CHECK4CARRIER(ON)
  242.                               CHECK4CARRIER(OFF)
  243.  
  244.  CHECK4OUTPUT(NUMBER) 
  245.                    Like the ALARM Function below : If OUTPUT from the modem
  246.                    is detected it immedeantly jumps to this specified jump
  247.                    marking. You may also jump to #NOCARRIER, #START and #END.
  248.                    It is also possible to just turn the checking OFF (so disable
  249.                    a specified output checking)
  250.                    Examples : CHECK4CARRIER(#NOCARRIER)
  251.                               CHECK4CARRIER(5)
  252.                               CHECK4CARRIER(OFF)
  253.  
  254.  DIAL              This Dials the number specified in PHONE_NR. If it is still
  255.                    connected to a system it hangs up first.
  256.                    Example : DIAL
  257.  
  258.  HANGUP            Hangs up/drops the carrier, etc.
  259.                    Example : HANGUP
  260.  
  261.  WAIT4STRING(NUMBER,STRING,NUMBER,COMMAND,STRING)
  262.                    Now thats the most important command in this script language.
  263.                    It waits for a special word in the modemoutput. 
  264.                    If it is encountered, the script continues, if not, 
  265.                    after the timeout, a specified string is send to the modem
  266.                    and after a specified number of timeouts, a command may be 
  267.                    executed.
  268.                    NOTE: First WAIT4STRING checks if in the CURRENT line is
  269.                    the word present. If not it waits for it.
  270.                    The Syntax : WAIT4STRING(a,b,c,d,e)
  271.                        a : How many seconds, after it will be an timeout. 
  272.                            (0-255) 0=unlimited (waits until TOTAL TIMEOUT
  273.                             - the script will jump to #NOCARRIER if no data
  274.                            comes from modem after 5 minutes ! - if nothing 
  275.                            gets through OR the string is detected in the
  276.                            datastream  at any time OR carrier gets lost
  277.                        b : The string that will be send to the modem after
  278.                            a timeout
  279.                        c : After how many total timeouts the failure command
  280.                            will be executed. 0=never, 1=first time, <=255 
  281.                        d : The special failure action command. It may be ANY
  282.                            (or none) command EXCEPT : ALARM, WAIT4STRING, IF
  283.                        e : The String to wait for ! (Case sensitive!)
  284.                    Example : WAIT4STRING(15,^M,2,GOTO(1),ogin:)
  285.                    In this example it waits for string "ogin:" for 15 
  286.                    seconds, and if not encountered, if sends a carriage return
  287.                    to the modem (^M), then waits again for 15s, and if "ogin:"
  288.                    is again not encountered, ^M is send again and after the 
  289.                    next 15s the FAILURE command is triggered, which means GOTO 
  290.                    jump mark no. 1
  291.  
  292.  LOG_SESSION_ON    From this point up, anything send from the modem is written
  293.                    to the logfile
  294.                    Example : LOG_SESSION_ON
  295.  
  296.  LOG_SESSION_OFF   if writing screenoutput to log was active, 
  297.                    it isn't any more to this point.
  298.                    Example : LOG_SESSION_OFF
  299.  
  300.  SEND(STRING)      The SEND command sends a string to the modem. You may here
  301.                    also send variables with a "$". It sends an ENTER 
  302.                    (Carriage Return) at the end.
  303.                    If no String is specified, it just prints an ENTER.
  304.                    Example : 
  305.            SEND(echo Hacked you system Time : $TIME - Date : $DATE > HACKED.TXT)
  306.            this sends "echo HAcked your system Time : 23:00 - Date : 24-12-95 > HACKED.TXT"
  307.  
  308.  SEND_()           Same as above but doesn't sends the ^M character (ENTER) at
  309.                    the end. Useful if you just need to enter one character
  310.                    or want to enter the modem command mode with  +++
  311.                    Examples : SEND_(n)
  312.                               SEND_(+++)
  313.  
  314.  SEND_NEXT_DIC(NUMBER)
  315.                    This moves forward the pointer on the current word in
  316.                    the dictionary and sends it to modem.
  317.                    Example : SEND_NEXT_DIC(1)
  318.  
  319.  SEND_DIC(NUMBER)  This sends the current dictionary word to modem.
  320.                    Example : SEND_DIC(1)
  321.  
  322.  NEXT_DIC(NUMBER)  This moves forward the pointer on the current word in
  323.                    the dictionary.
  324.                    Example : NEXT_DIC(1)
  325.  
  326.  SEND_NEXT_BRUTE(NUMBER)
  327.                    This generates the next valid brute force string and
  328.                    prints it to modem.
  329.                    Example : SEND_NEXT_BRUTE(1)
  330.  
  331.  SEND_BRUTE(NUMBER) 
  332.                    This prints the current valid brute force string to modem.
  333.                    Example : SEND_BRUTE(1)
  334.  
  335.  NEXT_BRUTE(NUMBER)
  336.                    This generates the next valid brute force string.
  337.                    Example : NEXT_BRUTE(1)
  338.  
  339.  IF VARIABLE OPERATOR STRING THEN COMMAND
  340.                    The IF command isn't very flexible by now ... tell me what
  341.                    you need and it will be in the next version.
  342.                    SYNTAX : IF <variable><operator><string> THEN <command>
  343.                       <variable> may be anything which is mentioned in PART VI
  344.                       <operator> may be "=" if it must be equal, "<" or ">" 
  345.                                  for greater and smaller and "~" if the variable
  346.                                  contains the string
  347.                       <string>   may be any word. for "<" or ">", variable and 
  348.                                  string must be digit variables !
  349.                       <command>  this command is executed when the condition
  350.                                  is TRUE. Look at the Command Listing for
  351.                                  WAIT4STRING to look up what you can use.
  352.                    Example : IF STRING~ogin THEN GOTO(3)
  353.                              IF the CURRENT LINE(STRING) CONTAINS(~) the string
  354.                              "ogin" in it THEN goto jump mark no. 3
  355.  
  356.  EXECUTE(STRING)   Executes a DOS Program. after the executen it continues 
  357.                    the script. You MAY include variables in the execution
  358.                    line. You may execute internal MsDos commands.
  359.                    Remember to put an "$" sign in front of variables and only
  360.                    spaces or "(" and ")" in front/back.
  361.                    WARNING : If you want to execute programs while connected
  362.                              in the script you MUST use a fossil driver or
  363.                              the computer will lock up! (Has got something to
  364.                              do with the interrupts ...)
  365.                              Use   X00.EXE E 2   before running LOGIN HACKER
  366.                    Note:If the program to exexute is in your PATH enviroment
  367.                         it will be found ... but better safe then sorry ;-)
  368.                    Example : EXECUTE(C:\SB\VPLAY C:\SB\VOC\HACKED.VOC)
  369.                              EXECUTE(COPY $LOGFILE C:\HACKED)
  370.  
  371.  ALARM(STRING,COMMAND)
  372.                    If a special string from the modem is encountered at a 
  373.                    point, this will trigger this special command. If a Alarm 
  374.                    is set, it will be active until it is disabled with the 
  375.                    command ALARM() or a new ALARM string or command is 
  376.                    specified. The Syntax ; ALARM(string,command) or ALARM().
  377.                    STRING : is the string for which is search in the data 
  378.                             which is send from the modem. 
  379.                    COMMAND: is the command to execute when encountered.
  380.                             Look at the Command Listing for WAIT4STRING
  381.                             to look up what you can use.
  382.                    Useful for example if you wanna hack a BBS where the SYSOP
  383.                    could break in for a chat to ask for your doing. 
  384.                    With this command you could automatically hangup and 
  385.                    terminate the script.
  386.                    Example : ALARM(chat,GOTO(#END))
  387.  
  388.  SET VARIABLE=STRING
  389.                    With this command you can define a variable in the #START 
  390.                    or #NOCARRIER section. If a variable is a digit you may 
  391.                    only set it to a digit. You may set the following variables:
  392.                    STRING, DIAL_TRIED, LOGIN_TRIED, S_TMP, D_TMP
  393.                    Example : SET D_TMP=3
  394.                              This sets the digit variable D_TMP to 3
  395.  
  396.  INC(DIGIT_VARIABLE)
  397.                    Increases the specified digit variable by 1.
  398.                    Will only do the command if the variable won't be out of
  399.                    the specified range after the addition.
  400.                    Valid for : DIAL_TRIES, DIAL_TRIED, LOGIN_TRIES, LOGIN_TRIED
  401.                                and D_TMP
  402.                    Example : INC(D_TMP)
  403.  
  404.  DEC(DIGIT_VARIABLE)
  405.                    Decreases the specified digit variable by 1.
  406.                    Will only do the command if the variable won't be out of
  407.                    the specified range after the subtraction.
  408.                    Valid for : DIAL_TRIES, DIAL_TRIED, LOGIN_TRIES, LOGIN_TRIED
  409.                                and D_TMP
  410.                    Example : DEC(D_TMP)
  411.  
  412.  WAIT(NUMBER)      Waits until the specifies seconds have passed. NUMBER must
  413.                    be between 1-255.
  414.                    Example : WAIT(10)
  415.  
  416.  WAIT_(NUMBER)     Waits until the specifies milliseconds have passed. 
  417.                    NUMBER must be between 1-65535.
  418.                    Example : WAIT(500)   (a half second)
  419.  
  420.  BEEP              It makes a BEEP ! Cool eh? ;-)
  421.  
  422.  
  423. #END
  424.  
  425.  
  426. -------------------------------------------------------------------------------
  427.  
  428.                   PART VI - Variables and Control Characters
  429.  
  430.  
  431.  Now I tell you all the variables that can be used for a SEND() or LOG()
  432.  command, and which additional variables you have got here.
  433.  As we said before, to print a variable to modem or logfile you must write a
  434.  "$" in front of it and there must be spaces around it. Variables you
  435.  can use are : - any of the specified in #DEFINE - but only the ones defined!
  436.                - STRING      which is the last LINE sended from the modem
  437.                - STRING2     has got the last 250 chars sended from modem.
  438.                - DIAL_TRIED  the actual tries to dial to the number
  439.                - LOGIN_TRIED the actual tries to login
  440.                - TIME        the actual time in hoursminutes (without ":" !)
  441.                              Example : TIME=1505 means 15:05 (3.05pm)
  442.                              if minutes are below 10 you must write a zero
  443.                              before it.
  444.                - DATE        the actual date (in the format MMDD)
  445.                              Example : DATE=503 means the 3th may
  446.                              if a day is below 10 you must wrte a zero before
  447.                              it.
  448.                - DIC(1)      the actual entry of the dictionary 1
  449.                - BRUTE(2)    the actual string of the brute force generator 2
  450.                - S_TMP       a string variable you can use as you like
  451.                - D_TMP       a digit variable you can use as you like
  452.  
  453.  For the IF and SET command : you may only use these variables above, NOT the 
  454.  ones in #DEFINE (where should be the logic? Those are static, constants, you
  455.  don't have to check them with IF !). Don't need the use the $ in front of
  456.  a variable here. This is only for SEND, LOG, WAIT4STRING where you need the
  457.  $ sign ...
  458.  
  459.  Examples : IF TIME>1215 THEN GOTO #END     (if it's after 12:15 it exits)
  460.             LOG($DIC(3))
  461.             SEND($S_TMP)
  462.  
  463.  
  464.  Now for special characters. You may write any CONTROL characters with the
  465.  LOG, SEND, or WAIT4STRING command with the "^" sign, proceded by the letter
  466.  of the control character. ENTER would be ^M. to print a normal "^", you must
  467.  write "^^" ... okay ? You may use from ^A to ^Z plus ^[ ^\ ^] and ^^
  468.  
  469.  Examples : SEND_(^D)
  470.  
  471.  
  472. -------------------------------------------------------------------------------
  473. #DEFINE
  474. <definitions>
  475. #NOCARRIER
  476. <some commands>
  477. #START
  478. <here you write your algorythm>
  479. #END
  480. -------------------------------------------------------------------------------
  481.  
  482.  For suggestions or bug report, call L.o.r.E. BBS  ++49-(0)69-823282
  483.                                      Login : THC   Password : THC
  484.  to write a comment to sysop, leech any THC release or get one of the
  485.  things this board is distributor, for example the SCAVENGER Dialer,
  486.  VLAD Magazine etc.
  487.  Call ARRESTED DEVELOPMENT (see THC.NFO for number) ans write to  van Hauser
  488.  OR write me an email ... adress + public pgp key below.
  489.  
  490. -------------------------------------------------------------------------------
  491. van Hauser's Public Key Block for vh@campus.de :
  492.  
  493. van Hauser/THC   L.o.r.E. BBS
  494. -----BEGIN PGP PUBLIC KEY BLOCK-----
  495. Version: 2.6.1
  496.  
  497. mQCNAzB6PNQAAAEEALx5p2jI/2rNF9tYandxctI6jP+ZJUcGPTs7QTFtF2c+zK9H
  498. ElFfvsC0QkaaUJjyTq7TyII18Na1IuGj2duIHTtG1DTDOnbnZzIRsXndfjCIz5p+
  499. Dt6UYhotbJhCQKkxuIT5F8EZpLTAL88WqaMZJ155uvSTb9uk58pv3AI7GIx9AAUT
  500. tBp2YW4gSGF1c2VyL1RIQyBvZiBMT1JFIEJCUw==
  501. =6UhL
  502. -----END PGP PUBLIC KEY BLOCK-----
  503.